package com.shell.customer.base.controller;

import com.shell.bee.base.annotation.Logging;
import com.shell.bee.entity.mvc.RetMsg;
import com.shell.bee.persistence.model.PageLimit;
import com.shell.customer.base.service.CusRecService;
import com.shell.customer.base.vo.CusRecVo;
import com.shell.customer.po.CusRec;
import com.shell.feign.PubOrganFeign;
import com.shell.governor.organization.po.PubOrgan;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class PubCustomerCController {
	@Autowired
	private PubOrganFeign pubOrganFeign;
	@Autowired
	private CusRecService pubCustomerCService;

	@RequestMapping
	@Logging(module = "��������", methods = "��������������������")
	public boolean checkPhoneNo(String phoneNo, String cusId) {
		return this.pubCustomerCService.checkPhoneNo(phoneNo, cusId);
	}

	@RequestMapping
	@Logging(module = "��������", methods = "������������������")
	public RetMsg checkCusCode(String cusId, String cusCode) {
		CusRec customer = this.pubCustomerCService.checkCustCode(cusId, cusCode);
		if (customer != null) {
			return new RetMsg("warning", false,
					"����������������������" + customer.getCusName() + "��������������������������");
		}
		return null;
	}

	@RequestMapping
	@Logging(module = "��������", methods = "���� ����������������")
	public RetMsg checkCusName(String cusId, String cusName) {
		CusRec customer = this.pubCustomerCService.checkCusName(cusId, cusName);
		if (customer != null) {
			return new RetMsg("warning", false, "��������������������������������");
		}
		return null;
	}

	@RequestMapping
	@Logging(module = "��������", methods = "��������")
	public RetMsg saveCustomer(CusRecVo customercVo) {
		int result = this.pubCustomerCService.saveCustomer(customercVo);
		if (result > 0) {
			return new RetMsg("success", "������������������");
		}
		return new RetMsg("error", "������������������");
	}

	@RequestMapping
	@Logging(module = "��������", methods = "������������")
	public RetMsg updateCustomer(CusRecVo customercVo) {
		int result = this.pubCustomerCService.updateCustomer(customercVo);
		if (result > 0) {
			return new RetMsg("success", "������������������");
		}
		return new RetMsg("error", "������������������");
	}

	@RequestMapping
	@Logging(module = "��������", methods = "����������������")
	public List<CusRecVo> selectCustomerList(PageLimit limit, CusRecVo customercVo) {
		return this.pubCustomerCService.selectCustomerList(limit, customercVo);
	}

	@RequestMapping
	@Logging(module = "��������", methods = "����������������")
	public CusRecVo getCustomer(String cusId) {
		return this.pubCustomerCService.getCustomer(cusId);
	}

	@RequestMapping
	@Logging(module = "��������", methods = "����&��������")
	public RetMsg FreezeCustomer(String cusId, boolean state) {
		int result = this.pubCustomerCService.freezeOrResumeCustomer(cusId, state);
		String str = "";
		if (state) {
			str = "����";
		} else {
			str = "����";
		}
		if (result > 0) {
			return new RetMsg("success", str + "������");
		}
		return new RetMsg("error", str + "������");
	}

	@RequestMapping
	@Logging(module = "��������", methods = "������������")
	public RetMsg checkOrganCode(String organCode) {
		PubOrgan parentOrgan = new PubOrgan();
		parentOrgan.setOrganCode(organCode);

		parentOrgan = this.pubOrganFeign.selectOne(parentOrgan);
		if (parentOrgan == null) {
			return new RetMsg("error", false, "��������������������������");
		}
		return new RetMsg("success", false, "");
	}

	@RequestMapping
	@Logging(module = "��������", methods = "��������������������")
	public boolean checkAcctNo(String acctNo, String cusId) {
		return this.pubCustomerCService.checkAcctNo(acctNo, cusId);
	}
}
